1. Field of the Invention
The present invention relates to processes and systems used during development of computer software systems.
2. Description of the Related Art
In large organizations and, especially, those in which many computer software systems and applications are utilized to carry out particular business functions (e.g., accounting systems, management systems, help-desk systems, user support systems, etc.), providing for system version updates, modifications, and changes has become a serious problem. For example, allocating resources (e.g., programmers, computing platforms, testing personnel, etc.) in efficient ways to effect version changes, upgrades, maintenance fixes, etc. has become a management problem that has not been adequately addressed by currently available planning systems and processes.
The aforementioned resource allocation and management problems are exacerbated by the fact that many organizations utilize so many systems and applications that effectively and efficiently manage resources to ensure robust system performance across all systems has become almost impossible. As such, many organizations employ systems that are allowed to operate with known problems or deficiencies for long periods of time without being fixed or changed. To add insult to injury, as the number of systems has increased, so to have the number of users, networks, and computing platforms, thus making system control and maintenance almost impossible objectives. Unfortunately, in modern software use environments, the management of software applications and systems through development, distribution, and post production (e.g., system performance monitoring, etc.) has lacked a formalized procedure, thus causing a state of "ad hoc" management. As a result, many organizations have developed and deployed low quality software products and systems which must be re-engineered due to software bugs, performance limitations, etc. The costs associated with such re-engineering is significant as resources are continually expended.
To address these problems, organizations have long sought to minimize the number of systems and applications used to solve business problems. Unfortunately, by reducing the number of software tools, organizations have often reduced the number of problems they can address and services that can be provided. As a result, many organizations cannot compete because they cannot develop and deploy systems that must be updated and changed to remain effective. There is currently no effective and reliable process or system which may be used within an organization to manage resources to ensure software system enhancement and proper functioning.
Additionally, although many organizations apply modern project management systems and paradigms, the same often have not been applied in a consistent and/or reliable manner. Accordingly, each software system needing development (e.g., a project) often takes on its own character including its own sets of dependencies, resource needs, time frames, etc. No uniform approach toward software development, formal or otherwise, has been proposed to uniformly structure the development and distribution of new and/or improved software systems within an organization.
Thus, there exists a need to provide new and improved project management processes that are reliable and repeatable across a number of software development and distribution efforts. To be viable, such processes, must incorporate standardized milestones, provide for uniform deliverables, and be easy to deploy. In particular, the processes must be reliable and repeatable in terms of specifying a set of requirements for a new and/or improved software system, developing and distributing that software system, and in terms of system monitoring within a dynamic environment such as a networked automatic data processing environment, etc.